home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / DNet.more / DTCP.h-two < prev    next >
Text File  |  1996-07-05  |  6KB  |  189 lines

  1. // DTCP.h  
  2. // by D. Gilbert, 1991-92, with help from code of Harry Chesley, Peter Speck and others 
  3.  
  4. #ifndef __DTCP__
  5. #define __DTCP__
  6.  
  7. #include <DObject.h>
  8.  
  9. //#include <DTaskMaster.h>
  10. class DTaskMaster;
  11.  
  12.  
  13. extern "C" {
  14. typedef  Boolean  (*TCPUserBreakHandler)(DTaskMaster* /* itsObject */);        
  15. typedef  void  (*TCPMessageHandler)(DTaskMaster* , long , const char* ); /* itsObject, msgID, msg */
  16. }
  17.  
  18.  
  19. class    DTCP : public DObject {
  20. public:        
  21.         static char*    LineEnd;
  22.         static short  LineEndSize;
  23.         
  24.         enum TCPlineEndFlags { kDontAddCRLF= false, kAddCRLF = true};
  25.     
  26.         enum TCPStatusResults { kTCPreleased = -1, kTCPclosed = 0,
  27.             kTCPlistening = 2, kTCPopening = 4, kTCPestablished = 8,
  28.             kTCPclosing = 16, kTCPPleaseClose = 14, kTCPUnknownState = 32,
  29.             kTCPwaitingforopen = 64};
  30.             
  31.         enum TCPExpectedBytesFlags { kTCPStopAtdotcrlf = -1, kTCPStopAtclose = -2};
  32.         
  33.         
  34.         DTCP();
  35.         virtual ~DTCP();
  36.         virtual void Initialize();
  37.  
  38.         virtual Boolean IsTCPInstalled();
  39.         
  40.         virtual void Fail(long errNo);
  41.         virtual void Fail(const char* msg);
  42.         virtual Boolean Failed();    // ???
  43.  
  44.         virtual long        Status();
  45.         virtual char*         StatusString(short state);  
  46.         virtual long        Version();  
  47.         virtual const char*    VersionString();  //??
  48.         
  49.         virtual void InstallMessageHandler(TCPMessageHandler aproc, DTaskMaster* itsObject);
  50.         virtual void InstallUserBreak(TCPUserBreakHandler aproc, DTaskMaster* itsObject);
  51.  
  52.         virtual void ShowMessage(const char* msg);
  53.         virtual void StatusMessage();
  54.         virtual void SetShowProgress( Boolean turnOn);
  55.         virtual void ShowProgress( long sendRecvCount);
  56.         virtual void ShowProgress();
  57.         
  58.         virtual Boolean EndOfMessage();
  59.         virtual void    SetEndOfMessage( Boolean isEnded);
  60.         
  61.         virtual Boolean UserBreak();
  62.         virtual void StreamYieldTime(); // makes TCPAbort if aborted from TThread
  63.  
  64.         virtual long NameToAddress(const char* hostName);
  65.         virtual char* AddressToName(long address);
  66.         virtual char* DotAddrToName(const char* dotAddress);
  67.  
  68.         void Open( char* hostname, unsigned short hostport, unsigned short localport = 0);
  69.         //void Open(long hostIP, unsigned short hostport, unsigned short localport = 0);
  70.  
  71.         virtual Boolean WaitedForOpen(long delayticks);
  72.         virtual Boolean WaitedForOpen();
  73.         virtual void Close();
  74.         virtual void Release();
  75.         virtual void Abort(); 
  76.  
  77.         virtual void SendBytes(void *data, long datasize, Boolean immediately = true);
  78.         virtual void Send(char *data, Boolean immediately = true);
  79.         virtual void SendCRLF( Boolean EvenIfLastSendHadCRLF = true, Boolean immediately = true);
  80.         virtual void SendStr( char* s, Boolean addCRLF = true, Boolean immediately = true);
  81.  
  82.         virtual long CharsAvailable();
  83.         virtual long TotalBytesReceived(); //??
  84.         virtual long NewBytesReceived();     //??
  85.         virtual long ConnectTime();
  86.         virtual    void NullTerm( Boolean turnon = true);
  87.         virtual void EatResponseLine();
  88.         
  89.         virtual void ReceiveData(void *data, long datasize, long &bytesReceived,
  90.                             Boolean stopatlf = false);  
  91.         virtual char* ReadWithChecks( long expectedbytes = kTCPStopAtclose, 
  92.                             Boolean convertnewline = false, 
  93.                             long maxbytes = 0, char* oldbuffer = NULL);
  94.         virtual short     RecvByte();  
  95.         virtual char* RecvChars( long readCount);
  96.         virtual char* RecvChunk( long maxChunk= 0, char* oldChunk= NULL);
  97.         virtual char* RecvLine(); // read up to first LF
  98. #ifdef IsThisObsolete
  99.         virtual char* RecvUpTo( Boolean lookForTerm= false, char termChar= 0, char* AppendToThisData = NULL);
  100.         virtual char* RecvMsg ( char OKChar= 0, long limit = 0);
  101. #endif
  102.  
  103. protected:
  104.         long            fSocket;                    // socket descriptor
  105.         long            fTimeout;    
  106.         Boolean        fFailed;                  // last op failed if true
  107.         char*            fError;                     // change to number...
  108.         long            fErrNo;
  109.         Boolean        fDoShowProgress;  // if true, ShowProgress 
  110.         Boolean        fEndofMessage;        // true if recv found end-of-message (dot-cr-lf) 
  111.  
  112.         long            fBytesread;    
  113.         long            fResultSize;            // we don't need all of these counters !!
  114.         long            fResultNew;
  115.         long            fResultTotal;
  116.         long            fMaxResultSize; 
  117.         long            fLimitResultSize;     // recv buffer ptrs 
  118.         char*            fResultHand;                // recv buffer 
  119.         long            fStartTime;                    // time at open connection
  120.         long            fConnectTime;                // == current or close time - start time
  121.         
  122.         TCPMessageHandler fMessageProc;
  123.         DTaskMaster*    fMessageObj;
  124.         TCPUserBreakHandler fBreakProc;
  125.         DTaskMaster*    fBreakObj;
  126.  
  127.         Boolean        fLastSentCRLF;    // last send ended w/ crlf
  128.         Boolean        fNullTerm;
  129.         
  130. #ifdef IsThisObsolete
  131.         virtual void OpenRecv( char* oldData, long limit);
  132.       virtual Boolean StoreRecvLimit( char b);
  133.         virtual void CloseRecv();
  134. #endif
  135.  
  136. #ifdef UseMacTCPApi
  137.             // low level i/o
  138.         virtual void SendData( Ptr wdsPtr, Boolean immediately = true); 
  139.         virtual void NoCopyRead( Ptr theRdsArray, short numEntries);
  140.         virtual void ReturnRds( Ptr theRdsArray);        
  141.  
  142.         virtual StreamPtr CreateStream(Ptr bufferP, unsigned long bufSize);  
  143.  
  144.         virtual void CopyReadArray(char **datap, long datasize, long &bytesReceived, 
  145.                                         Ptr aRdsArray, short numEntries,
  146.                                         Boolean convertnewline = false, Boolean checklf = false,
  147.                                         Boolean stopatlf = false);
  148.         virtual void SaveUnreadArray();
  149.         virtual    long UnreadCharsWaiting(Ptr aRdsArray);
  150. #endif    // UseMacTCPApi
  151.  
  152. private: 
  153. // from TMacTCP..............
  154.         Boolean fConnectionIsOpen;
  155.         Boolean fStreamIsOpen;
  156.         char        fLastc,fLast2c,fLast3c;
  157.         long        fReadSaveLen;
  158.         char*        fReadSave;
  159. #ifdef UseMacTCPApi
  160.         Ptr         fStreamBufferP;
  161.         TCPiopb *fPBP, *fReceivePBP, *fAbortPBP;
  162.         StreamPtr fStreamP;
  163.         Ptr         fWdsEntryP;
  164.         Ptr         fRdsEntryP;
  165.         Ptr         fWaitingP;
  166.         long        fWaitSeg;
  167.         long        fWaitIndx;
  168.         Boolean fHasRDS;
  169.         // debugging vars
  170.         short        fGetFile;
  171. #endif
  172.  
  173. };
  174.         
  175.         
  176. extern    long    gTCPTimeout;        // value for fTimeout for each new TTCP
  177.  
  178. void         InitializeTCP();
  179. void         FinishTCP();
  180. Boolean TCPIsItInstalled();
  181.  
  182. long          MyIP();
  183. char*     GetMyDotName();
  184. long       DotName2IP(const char* name);
  185. char*     IP2DotName(long ip);
  186.  
  187.  
  188. #endif
  189.